# 全局变量
a = 10


def func_1():
    print(a)


def func_2():
    # 创建了局部变量a,而不是改变了全局变量a
    a = 100
    print(a)


def func_3():
    # 使用global来声明或使用全局变量，而不是创建一个局部变量
    global a, b
    a = 100
    b = 123
    print(a, b)


def func_4():
    a = 5

    def func_5():
        # nonlocal只能在嵌套函数中使用。变量在外部函数中先进行声明，然后在内部函数中用nonlocal再次声明。
        nonlocal a
        a = 20
        print('func_5', a)

        def func_6():
            nonlocal a
            # print('func_6', a)
            a = 30
            print('func_6', a)

        func_6()

    func_5()
    print('func_4', a)


print('函数外第一次打印a', a)
func_1()
func_2()
print('函数外第二次打印a', a)
# print('b:', b)
func_3()
print('函数外第三次打印a', a)
print('b', b)

func_4()
